#pragma once

#include "NtBaseProperty.h"
#include "NtAutoPtr.h"

#define NT_DECLARE_FIO(Name, Type)											\
void Set##Name(Type v) { m_##Name##Property = v; }							\
Type Get##Name() const { return m_##Name##Property; }

class NtVisibleObject: public NtCountedObject
{
public:
	NtVisibleObject(void);
	~NtVisibleObject(void);

	virtual void Update(DWORD dwTimer);
	virtual void Render();

public:
	NT_DECLARE_FIO(Visible,		BOOL);
	NT_DECLARE_FIO(NeedUpdate,	BOOL);

protected:
	NtBoolProperty	m_VisibleProperty;
	NtBoolProperty	m_NeedUpdateProperty;
};

NtAutoPtr(NtVisibleObject);

